package day9.atm;

import java.util.Scanner;

/**
 * 面向对象版本的ATM
 */
public class ATMObject {

    private User[] users = {
            new User("aaaaaa","111111",1000),
            new User("bbbbbb","222222",2000),
            new User("cccccc","333333",3000),
            new User("dddddd","444444",4000),
            new User("eeeeee","555555",5000),
    };
    private Scanner sc = new Scanner(System.in);
    private int index;
    // 控制ATM流程的方法
    public  void process(){
        System.out.println("欢迎使用Love银行");
        while (true){
            login();
            menu();
        }
    }
    // 登录方法
    public  void login(){
        for (int i = 0;i < 3;i++){
            System.out.println("请输入账号：");
            String account = sc.next();
            System.out.println("请输入密码");
            String pwd = sc.next();
            for (int j = 0;j < users.length;j++){
                if (users[j].getAccount().equals(account) && users[j].getPwd().equals(pwd)){
                    System.out.println("登录成功");
                    index = j;
                    return;
                }
            }
            System.out.println("账号或密码错误请重新输入,还剩"+ (2 - i)+"次");
        }
        System.out.println("次数用完，卡已被吞！");
        System.exit(0);//系统结束
    }
    // 菜单界面
    public  void menu(){
        while (true){
            System.out.println("请选择：1-查询 2-存款 3-取款 4-转账 5-切换账号 6-退出 7-更改密码");
            int input = sc.nextInt();
            if (input == 1){
                search();
            }else if (input == 2){
                save();
            }else if (input == 3){
                get();
            }else if (input == 4){
                transfer();
            }else if (input == 5){
                System.out.println("账号登出");
                return;
            }else if (input == 6){
                System.out.println("谢谢使用，再见！");
                System.exit(0);
            }else if (input == 7){
                if(changePwd()){
                    System.out.println("已登出");
                    return;
                }
            } else {
                System.out.println("选择有误，请重新选择");
            }
        }
    }
    // 存款
    public  void save(){
        System.out.println("请输入存入的金额：");
        double money = sc.nextDouble();
        users[index].setBlance(users[index].getBlance() + money);
        System.out.println("存款成功");
    }
    // 取款
    public  void get(){
        System.out.println("请输入您的取款金额：");
        double money = sc.nextDouble();
        if (money <= users[index].getBlance()){
            users[index].setBlance(users[index].getBlance() - money);
        }else {
            System.out.println("您的余额不足，请重新选择");
            return;
        }
        System.out.println("取款成功");
    }
    // 查询
    public  void search(){
        System.out.println("您的余额为："+users[index].getBlance());
    }
    // 转账
    public  void transfer(){
        System.out.println("请输入转账金额：");
        double money = sc.nextDouble();
        // 判断余额是否足够
        if(money > users[index].getBlance()){
            System.out.println("余额不足");
            return;
        }
        System.out.println("请输入对方账号：");
        String otherAccount = sc.next();
        // 不能转给自己
        if(otherAccount.equals(users[index].getAccount())){
            System.out.println("不能转给自己");
            return;
        }
        // 循环判断输入的账号是否存在
        for(int i = 0;i < users.length;i++){
            if(users[i].getAccount().equals(otherAccount)){
                // 当前账户的钱扣去
                users[index].setBlance(users[index].getBlance() - money);
                // 把钱加到对方账户上
                users[i].setBlance(users[i].getBlance() + money);
                System.out.println("转账成功");
                return;
            }
        }
        System.out.println("输入的账号不存在");
    }
    // 修改密码
    public  boolean changePwd(){
        System.out.println("请输入原密码：");
        String oldPwd = sc.next();
        if(!oldPwd.equals(users[index].getPwd())){
            System.out.println("原密码输入错误");
            return false;
        }
        System.out.println("请输入新密码：");
        String newPwd = sc.next();
        if(oldPwd.equals(newPwd)){
            System.out.println("新密码不能和原密码一样");
            return false;
        }
        System.out.println("请再次输入新密码：");
        String confirmPwd = sc.next();
        if(!newPwd.equals(confirmPwd)){
            System.out.println("两次密码不一致");
            return false;
        }
        users[index].setPwd(newPwd);
        System.out.println("密码修改成功");
        return true;
    }
    public static void main(String[] args) {
        ATMObject atmObject = new ATMObject();
        atmObject.process();
    }
}